package code14_exception;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Scanner;

import org.junit.Test;

public class Test01 {
	
	public static void main(String[] args) {
		//f1();
		
//		f2();
//		System.out.println("over");
		
		t1();
	}

	private static void f2() {
		int[] arr = {1,2,3};
		try {
			System.out.println("f2---111");
			System.out.println(arr[3]);
//		} catch (ArrayIndexOutOfBoundsException e) {
//			System.out.println("getMessage:"+e.getMessage());
		} finally {
			// 不管上面的代码有没有出现错误, 都会在最后执行
			System.out.println("finally-----");
		}
		System.out.println("f2----");
	}

	private static void f1() {
		// java.lang.ArithmeticException: / by zero
		try {
//			int m = 1/0;
//		} catch (ParseException e) {
//			// 除了 Exception 之外的 检查异常，必须出现在 try 代码中，否则不能使用 对应的 catch
		} catch (Exception e) {
			System.out.println("有异常出现:" + e.getMessage());
			e.printStackTrace();
		}
//		catch (ArithmeticException e) {
//			// 父类必须在子类后面
//		}
	}
	
	public static void t1() {
		// 使用 Scanner 的 nextInt 接收用户输入的整数, 并存入集合, 
		// 用户需要输入5个整数, 才结束输入操作, 并输出 集合中元素, 并结束程序。 
		// 如果用户输入的不是整数, 则给予用户提示, 并让用户重新输入。
		Scanner sc = new Scanner(System.in);
		// Shift+Alt+Z
		List<Integer> list = new ArrayList<Integer>();
		int count = 5;
		while(count > 0) {
			try {
				System.out.println("请输入整数:");
				int num = sc.nextInt();
				// 上面出错时, 不会执行下面的代码
				list.add(num);
				count--;
			} catch (InputMismatchException e) {
				//e.printStackTrace();
				// 需要把错误的内容从 Scanner 中取出, 否则 nextInt 不能正常获取下一个输入。
				String next = sc.next();
				System.out.println("您输入的 ["+ next +"] 不是整数，请重新输出");
			}
		}
		System.out.println("list:"+list);
		
	}

}
